package com.qq.vip.mikuPy2001.bukkit.gui.model;

import com.qq.vip.mikuPy2001.bukkit.gui.util.ItemUtil;
import com.qq.vip.mikuPy2001.bukkit.gui.util.Message;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.inventory.ItemStack;

/**
 *
 * @author MukiPy2001
 */
public class EditBox extends Module {

    /**
     * 根据平面坐标定义 EditBox 的位置
     *
     * @param ModuleID Module 的唯一ID
     * @param line Module 所在行数,起始为1
     * @param lineIndex Module 所在列数,起始为1
     */
    public EditBox(String ModuleID, int line, int lineIndex) {
        this(ModuleID, line, lineIndex, false);
    }

    /**
     * 根据箱子内部位置系统定义 EditBox 的位置
     *
     * @param ModuleID EditBox 的唯一ID
     * @param index EditBox 所在的位置
     */
    public EditBox(String ModuleID, int index) {
        this(ModuleID, index, false);
    }

    /**
     * 根据平面坐标定义 EditBox 的位置
     *
     * @param ModuleID EditBox 的唯一ID
     * @param line EditBox 所在行数,起始为1
     * @param lineIndex EditBox 所在列数,起始为1
     * @param show
     */
    public EditBox(String ModuleID, int line, int lineIndex, boolean show) {
        this(ModuleID, (line - 1) * 9 + lineIndex - 1, show);
    }

    /**
     * 根据箱子内部位置系统定义 EditBox 的位置
     *
     * @param ModuleID Module 的唯一ID
     * @param index Module 所在的位置
     * @param show
     */
    public EditBox(String ModuleID, int index, boolean show) {
        super(ModuleID, index, null, show);
    }

    /**
     * 从配置文件加载. 详细格式请查阅示例
     *
     * @param ModuleID EditBox 的唯一ID
     * @param con
     */
    public EditBox(String ModuleID, ConfigurationSection con) {
        super(ModuleID, con);
    }

    /**
     * 获取 EditBox 的可编辑项.
     *
     * @return
     */
    @Override
    public ItemStack getItemStack() {
        return super.getItemStack(); //To change body of generated methods, choose Tools | Templates.
    }

    /**
     * 清空编辑框. 也就是把物品设为null
     */
    public void clean() {
        setItemStack(null);
    }

    /**
     * 注销此控件. 如果控件内有可编辑项,会试图还给玩家.
     *
     */
    @Override
    public void disable() {
        ItemStack itemStack = getItemStack();
        if (ItemUtil.isEmpty(itemStack))
            return;
        int firstEmpty = getView().getPlayer().getInventory().firstEmpty();
        if (firstEmpty == -1)
            Message.debug("玩家背包满了");
        else
            getView().getPlayer().getInventory().addItem(itemStack);
        setItemStack(null);
    }

    @Override
    public String toString() {
        String s1 = super.toString();
        String s2 = s1.substring(0, s1.length() - 1);
        return s2 + ", " + ItemUtil.toString(getItemStack()) + "]";
    }
}
